import QRCode from './weapp.qrcode.esm';

let textCanvas;

Page({
  // 跳转
  targetHouse() {
    wx.switchTab({
      url: '/pages/index/index',
    });
  },

  onReady() {
    // 初始化二维码
    QRCode({
      width: 200,
      height: 200,
      canvasId: 'myQrcode',
      colorDark: '#000000',
      colorLight: '#ffffff',
      text: 'https://github.com/yingye',
    });

    // 保存二维码为临时路径
    wx.canvasToTempFilePath({
      canvasId: 'myQrcode',
      success(res) {
        console.log('二维码路径:', res);
        const tempQrcodePath = res.tempFilePath;
        console.log(tempQrcodePath);

        // 获取canvas节点
        wx.createSelectorQuery().select('#newQrcode').fields({
          node: true,
          size: true,
        }).exec((res) => {
          textCanvas = res[0].node; // 获取 canvas 节点
          let textCtx = textCanvas.getContext('2d'); // 获取 2d 上下文

          const dpr = wx.getSystemInfoSync().pixelRatio; // 获取设备像素比
          textCanvas.width = res[0].width * dpr;
          textCanvas.height = res[0].height * dpr;
          textCtx.scale(1, 1);
          textCtx.clearRect(0, 0, textCanvas.width, textCanvas.height); // 清空 canvas

          // 绘制背景图（如果需要背景图，可以加载）
          // const bg = textCanvas.createImage();
          // bg.src = ''; // 你可以在这里设置背景图路径
          // bg.onload = () => {
          //   const bgWidth = bg.width;
          //   const bgHeight = bg.height;
          //   const scaleX = textCanvas.width / bgWidth;
          //   const scaleY = textCanvas.height / bgHeight;
          //   const scale = Math.max(scaleX, scaleY); // 选择最大的比例以适应 canvas
          //   const drawWidth = bgWidth * scale;
          //   const drawHeight = bgHeight * scale;
          //   textCtx.drawImage(bg, 0, 0, drawWidth, drawHeight);
          // };

          // 加载二维码图像
          const qrImage = textCanvas.createImage();
          qrImage.src = tempQrcodePath; // 使用临时路径
          qrImage.onload = () => {
            console.log('二维码加载成功');
            // 设置二维码绘制位置（居中）
            const qrWidth = 800; // 设置二维码宽度
            const qrHeight = 800; // 设置二维码高度
            const qrX = (textCanvas.width - qrWidth) / 2; // 水平居中
            const qrY = (textCanvas.height - qrHeight) / 2; // 垂直居中

            // 绘制二维码到背景图上
            textCtx.drawImage(qrImage, qrX, qrY, qrWidth, qrHeight);
          };
        });
      },
      fail(err) {
        console.error('获取临时文件失败', err);
      },
    });
  },

  // 长按保存
  saveQrcode() {
    wx.canvasToTempFilePath({
      canvas: textCanvas,
      success(finalRes) {
        console.log('合成图像路径:', finalRes.tempFilePath);
        // 保存图片到相册
        wx.saveImageToPhotosAlbum({
          filePath: finalRes.tempFilePath,
          success(res) {
            console.log('图片已保存');
          },
          fail(err) {
            console.error('保存图片失败', err);
          },
        });
      },
      fail(err) {
        console.error('保存二维码失败', err);
      },
    });
  },
});
